package com.ssy.lingxi.system.controller;

import com.ssy.lingxi.common.response.PageData;
import com.ssy.lingxi.common.response.Wrapper;
import com.ssy.lingxi.system.model.request.*;
import com.ssy.lingxi.system.model.response.MenuCodeVO;
import com.ssy.lingxi.system.service.MenuCodeService;
import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;
import javax.validation.Valid;
import java.util.List;

/**
 * @menu 菜单编码设置相关接口
 * @author 万宁
 * @version 2.0.0
 * @date 2021-01-14
 */
@Api(tags = "菜单编码设置相关接口")
@RestController
@RequestMapping("/menu/code")
public class MenuCodeController {
    @Resource
    private MenuCodeService menuCodeService;

    /**
     * 新增菜单编码
     * @param addVO 接口参数
     * @return 操作结果
     */
    @RequestMapping("/add")
    public Wrapper<Void> addMenuCode(@RequestBody @Valid MenuCodeAddVO addVO) {
        return menuCodeService.addMenuCode(addVO);
    }

    /**
     * 根据Id，修改菜单编码
     * @param updateVO 接口参数
     * @return 操作结果
     */
    @RequestMapping("/update")
    public Wrapper<Void> updateMenuCode(@RequestBody @Valid MenuCodeUpdateVO updateVO) {
        return menuCodeService.updateMenuCode(updateVO);
    }

    /**
     * 根据Id,删除菜单编码
     * @param idVO 接口参数
     * @return 操作结果
     */
    @RequestMapping("/delete")
    public Wrapper<Void> deleteMenuCodeById(@RequestBody @Valid IdVO idVO) {
        return menuCodeService.deleteMenuCodeById(idVO);
    }

    /**
     * 根据code、source查询一个菜单编码
     * @param getVO 接口参数
     * @return 查询结果
     */
    @RequestMapping(value = "/get", method = RequestMethod.GET)
    public Wrapper<MenuCodeVO> findMenuCode(@Valid MenuCodeGetVO getVO) {
        return menuCodeService.findMenuCode(getVO);
    }

    /**
     * 根据source，查询菜单编码列表
     * @param sourceVO 接口参数
     * @return 查询结果
     */
    @RequestMapping(value = "/list", method = RequestMethod.GET)
    public Wrapper<List<MenuCodeVO>> listMenuCode(@Valid MenuCodeSourceVO sourceVO) {
        return menuCodeService.listMenuCode(sourceVO);
    }

    /**
     * 分页查询菜单编码列表
     * @param pageVO 接口参数
     * @return 查询结果
     */
    @RequestMapping(value = "/page", method = RequestMethod.GET)
    public Wrapper<PageData<MenuCodeVO>> pageMenuCode(MenuCodePageVO pageVO) {
        return menuCodeService.pageMenuCode(pageVO);
    }

}
